// 入口文件
import Vue from 'vue';
//导入 vue-router
import VueRouter from 'vue-router';
//导入 vuex
import Vuex from 'vuex'
//导入vue-resource
import VueResource from 'vue-resource';
//导入router实例
import router from './router.js';


Vue.use(VueRouter);
Vue.use(VueResource);
Vue.use(Vuex);
//配置全局 api路径
Vue.http.options.root = 'http://www.lovegf.cn:8899';
Vue.http.options.emulateJSON = true;

//导入格式化时间插件
import moment from 'moment';
//定义全局过滤器
Vue.filter('timeFil', function(str) {
    return moment(str).format("YYYY-MM-DD HH:mm:ss")
});


//导入App根组件
import App from './App.vue';

//按需导入mint-ui 中的 组件
import {
    Header,
    Button,
    Swipe,
    SwipeItem,
    Lazyload,
    Switch
} from 'mint-ui';
Vue.component(Header.name, Header);
Vue.component(Button.name, Button);
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Switch.name, Switch);
Vue.use(Lazyload);

//导入图片预览插件
import VuePreview from 'vue-preview';
Vue.use(VuePreview);


//导入全局css
import "./css/app.scss"

//导入 mui样式
import "./lib/mui/css/mui.min.css"
//导入 mui扩展字体
import "./lib/mui/css/icons-extra.css"

//本地获取数据
var car = JSON.parse(localStorage.getItem('car' || '[]'));

var store = new Vuex.Store({
    state: {
        car: car
    },
    mutations: {
        //得到商品的数据
        getgoodsinfo(state, goodsinfo) {
            //首先 先遍历car 看是否是相同的商品 相同直接加数量 不同直接添加进car
            var flag = false;
            state.car.some(item => {
                if (item.id == goodsinfo.id) {
                    flag = true
                    item.count = parseInt(item.count) + parseInt(goodsinfo.count)
                    return true
                }
            })
            if (!flag) {
                state.car.push(goodsinfo)
            }
            localStorage.setItem('car', JSON.stringify(state.car))
        },
        //在购物车 更新 同步数据 到 徽章
        updataCarShopHuiZhang(state, goodsinfo) {
            state.car.some(item => {
                if (item.id == goodsinfo.id) {
                    item.count = parseInt(goodsinfo.count)
                    return true
                }
            })
            localStorage.setItem('car', JSON.stringify(state.car))
        },
        //删除购物车列表
        delShopCar(state, id) {
            state.car.forEach((item, i) => {
                if (item.id == id) {
                    state.car.splice(i, 1)
                }
            })
            localStorage.setItem('car', JSON.stringify(state.car))
        },
        //同步选中状态
        updataSelect(state, info) {
            state.car.some(item => {
                if (item.id == info.id) {
                    item.selected = info.selected
                    return true
                }
            })
            localStorage.setItem('car', JSON.stringify(state.car))
        }
    },
    getters: {
        //添加商品的总数 同步到 购物车 徽章上
        updataCarNum(state) {
            var a = 0;
            state.car.forEach(item => {
                a = parseInt(a) + parseInt(item.count)
            });
            return a
        },
        //得到全部商品的id
        getCarId(state) {
            var b = [];
            state.car.forEach(item => {
                b.push(item.id)
            })
            return b
        },
        //得到全部商品的数量 , 同步到 购物车页面 的 num控件
        getCount(state) {
            var c = {};
            state.car.forEach(item => {
                c[item.id] = item.count
            })
            return c
        },
        //得到商品selected的属性
        getSelected(state) {
            var d = {};
            state.car.forEach(item => {
                d[item.id] = item.selected
            })
            return d
        },
        //得到商品件数和总价（前提是选中状态）
        getAll(state) {
            var e = {
                count: 0,
                allMoney: 0
            };
            state.car.forEach(item => {
                if (item.selected) {
                    e.count = parseInt(e.count) + parseInt(item.count)
                    e.allMoney = parseInt(e.allMoney) + parseInt(item.count) * parseInt(item.price)
                }
            })
            return e
        }
    }
})


var vm = new Vue({
    el: "#app",
    router,
    store,
    render: c => c(App)
})